1. Field of the Invention
The present invention relates to the field of memory management and more particularly to the field of garbage collection for memory management.
2. Description of the Related Art
Memory leakage has confounded software developers for decades resulting in the sometimes global distribution of bug-ridden, crash-prone software applications. Particularly in respect to those programming languages which permitted the manual allocation of memory, but also required the manual de-allocation of allocated memory, memory leakage has proven to be the principal run-time bug most addressed during the software development cycle. So prevalent a problem has memory leakage become, entire software development tools have been developed and marketed solely to address the memory leakage problem.
Memory leakage, broadly defined, is the gradual loss of allocable memory due to the failure to de-allocate previously allocated, but no longer utilized memory. Typically, memory can be reserved for data having a brief lifespan. Once the lifespan has completed, the reserved memory ought to be returned to the pool of allocable memory so that the reserved memory can be used at a subsequent time as necessary. Importantly, where memory leakage persists without remediation, ultimately not enough memory will remain to accommodate the needs of other processes.
Recognizing the importance of addressing the memory leakage problem, computer programming language theorists have developed the notion of garbage collection. Garbage collection refers to the automated analysis of allocated memory to identify regions of allocated memory containing data which no longer are required for the operation of associated processes. In the context of object oriented programming languages such as the Java™ programming language, when objects residing in memory are no longer accessible within a corresponding application, the memory allocated to the “dead” object can be returned to the pool of allocable memory.
The process of garbage collection can be time consuming and can result in a degradation of performance for a hosted application. A primary factor affecting the time consumption of a garbage collection operation can include heap size. Generally, the larger the heap size, the more time consuming a garbage collection operation can be. Heap size, however, can be limited for a virtual machine for a number of reasons unrelated to garbage collection. To circumvent the limitation on heap size, it is common to utilize multiple virtual machines for a single central processing unit (CPU) in order to support the execution of a hosted application. Notwithstanding, the typical garbage collection operation can fully utilize a supporting CPU such that a garbage collection operation in one virtual machine can degrade the performance of another virtual machine supported by the same CPU.
In most cases, the degradation of performance will have little impact on the performance of a hosted application as most hosted applications are not time sensitive. However, some classes of hosted applications, including soft real-time systems, depend upon consistent performance at a guaranteed level of Quality of Service (QoS). Generally, soft real-time systems include speech recognition and text to speech systems. As it will be well understood in the art, soft real-time systems prefer to avoid the degradation in performance caused by garbage collection.